package com.price.sample.ui

import android.graphics.Color
import android.os.Bundle
import android.text.method.LinkMovementMethod
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.text.*
import com.price.common.extend.alignCenter
import com.price.common.extend.alignOpposite
import com.price.common.extend.append
import com.price.common.extend.appendClickable
import com.price.common.extend.appendSpace
import com.price.common.extend.blur
import com.price.common.extend.bullet
import com.price.common.extend.dp
import com.price.common.extend.fontFamily
import com.price.common.extend.leadingMargin
import com.price.common.extend.quote
import com.price.common.extend.size
import com.price.common.extend.sp
import com.price.common.extend.toast
import com.price.common.extend.transparentHighlightColor
import com.price.common.extend.url
import com.zp.common.R

/**
 * @author Dylan Cai
 */
class SpannableStringActivity : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_spannable_string)
        setTitle(R.string.spannable_string)
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        supportActionBar?.setDisplayShowHomeEnabled(true)
        val textView: TextView = findViewById(R.id.textView)

        textView.text = buildSpannedString {
            appendLine()
            append("我要一步一步往上爬，")
            bold { appendLine("在最高点乘着叶片往前飞") }
            appendLine()

            append("我要一步一步往上爬，")
            italic { appendLine("在最高点乘着叶片往前飞") }
            appendLine()

            append("我要一步一步往上爬，")
            underline { appendLine("在最高点乘着叶片往前飞") }
            appendLine()

            append("我要一步一步往上爬，")
            color(Color.RED) { appendLine("在最高点乘着叶片往前飞") }
            appendLine()

            append("我要一步一步往上爬，")
            backgroundColor(Color.RED) { appendLine("在最高点乘着叶片往前飞") }
            appendLine()

            append("我要一步一步往上爬，")
            strikeThrough { appendLine("在最高点乘着叶片往前飞") }
            appendLine()

            append("我要一步一步往上爬，")
            scale(1.3f) { appendLine("在最高点乘着叶片往前飞") }
            appendLine()

            append("我要一步一步往上爬，")
            superscript { appendLine("在最高点乘着叶片往前飞") }
            appendLine()

            append("我要一步一步往上爬，")
            subscript { appendLine("在最高点乘着叶片往前飞") }
            appendLine()

            append("我要一步一步往上爬，")
            size(11.sp) { appendLine("在最高点乘着叶片往前飞") }
            appendLine()

            append("我要一步一步往上爬，")
            blur(10f) { appendLine("在最高点乘着叶片往前飞") }
            appendLine()

            append("我要一步一步往上爬，")
            fontFamily("serif") { appendLine("在最高点乘着叶片往前飞") }
            appendLine()

            append("我要一步一步往上爬，")
            url("https://www.baidu.com") { appendLine("在最高点乘着叶片往前飞") }
            appendLine()

            append("我要一步一步往上爬，")
            appendClickable("在最高点乘着叶片往前飞") { toast("text") }
            appendLine()

            append("我要一步一步往上爬，")
            append("在最高点乘着")
            append(R.drawable.leaf)
            appendLine("往前飞")
            appendLine()

            append("我要一步一步往上爬，")
            append("在最高点乘着")
            appendClickable(R.drawable.leaf) { toast("image") }
            appendLine("往前飞")
            appendLine()

            append("我要一步一步往上爬，")
            appendSpace(20.dp)
            appendLine("在最高点乘着叶片往前飞")
            appendLine()

            alignCenter { appendLine("我要一步一步往上爬，在最高点乘着叶片往前飞") }
            appendLine()

            alignOpposite { appendLine("我要一步一步往上爬，在最高点乘着叶片往前飞") }
            appendLine()

            leadingMargin(textView.textSize * 2) { appendLine("我要一步一步往上爬，在最高点乘着叶片往前飞") }
            appendLine()

            bullet(4.dp) { appendLine("我要一步一步往上爬，在最高点乘着叶片往前飞") }
            appendLine()

            quote { appendLine("我要一步一步往上爬，在最高点乘着叶片往前飞") }
            appendLine()

            textView.movementMethod = LinkMovementMethod.getInstance()
            textView.transparentHighlightColor()
        }
    }

    override fun onSupportNavigateUp(): Boolean {
        onBackPressed()
        return true
    }
}